package com.zyz.study.config;
// 声明当前类所在的包名，便于 Java 项目的组织与管理。
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
// 将配置文件中以 "langchain.community.dashscope.chat-model" 为前缀的属性绑定到本类的字段
public class LLMConfig {
    // 这个是云端通义千问的api
    private String baseUrl = "https://dashscope.aliyuncs.com/compatible-mode/v1";

    @Value("${langchain.community.dashscope.chat-model.api-key}")
    private String apiKey;

    @Bean
    // qwen3-30b-a3b-instruct-2507
    // 方法名 chatModel：创建并返回 ChatModel 对象，用于与 LLM 进行对话。
    public ChatModel Qwen3_30b_a3b_instruct_2507_chatModel() {
        // 创建并返回一个 OpenAiChatModel 实例，使用 Builder 模式设置必要参数。
        return OpenAiChatModel.builder()
                .apiKey(apiKey)         // 设置 API Key（从配置文件注入的值）
                .modelName("qwen3-30b-a3b-instruct-2507")   // 设置模型名称（从配置文件注入的值）
                .baseUrl(baseUrl)       // 设置 API 基础 URL
                .build();               // 构建 OpenAiChatModel 实例
    }

    @Bean
    public ChatModel DeepSeekR1_0528_chatModel() {
        return OpenAiChatModel.builder()
                .apiKey(apiKey)
                .modelName("deepseek-r1-0528")
                .baseUrl(baseUrl)
                .build();
    }

    // 接下来开始实现文本加图片的操作
    // 通义千问VL-Max-2025-04-08
    @Bean
    public ChatModel QwenVL_Max_2025_04_08_chatModel(){
        return OpenAiChatModel.builder()
                .apiKey(apiKey)
                .modelName("qwen-vl-max-2025-04-08")
                .baseUrl(baseUrl)
                .build();
    }

}
